package io.github.siltal.examsystembackend.dto;

import io.github.siltal.examsystembackend.entity.ExamOption;
import io.github.siltal.examsystembackend.entity.ExamQuestion;

import java.util.List;
import java.util.Map;
import java.util.Optional;

import java.util.stream.Collectors;

public record QuestionOption(
        String question,
        Integer type,
        List<Option> options // 使用 Map 接口而不是具体的 HashMap
) {
    /**
     * 静态工厂方法，用于从领域模型对象创建 DTO。
     *
     * @param examQuestion 题目对象
     * @param examOptions  该题目的选项列表
     * @return 转换后的 QuestionOption 对象
     */
    public static QuestionOption from(ExamQuestion examQuestion, List<ExamOption> examOptions) {
        List<Option> mappedOptions = examOptions.stream()
                .map(option -> new Option(option.getOption(), option.getIsTrue()))
                .collect(Collectors.toList()); // 收集结果到一个新的 List

        // 2. 创建并返回 QuestionOption 记录
        return new QuestionOption(
                examQuestion.getTitle(),
                // 使用 ofNullable 来安全地处理可能为 null 的 titleImg
                examQuestion.getType(),
                mappedOptions
        );
    }
}